const { join, extname } = require('path')
const fs = require('fs')
const http = require('http')

// 定义一个mime类型对象
const mimes = {
  '.js': 'application/javascript',
  '.jpg': 'image/jpeg',
  '.css': 'text/css',
  '.html': 'text/html;charset=utf-8'
}



// 网站根目录  url地址中的 / => www目录
const webRoot = join(__dirname, 'www')
// req 是对象也是流 res是对象也是流
http.createServer((req, res) => {
  if (req.url != '/favicon.ico') {
    // 得到客户请求的pathname，并且做了缺省页的处理
    let pathname = req.url === '/' ? '/index.html' : req.url
    // 得到请求的对象服务器中真实的文件路径
    let filepath = join(webRoot, pathname)
    // 判断文件是否存在，如果不存在则返回404
    if (fs.existsSync(filepath)) { // 文件存在

      // 得到请求文件的扩展名
      const ext = extname(filepath)
      // 得到扩展名
      const mime = mimes[ext]

      // 设置响应头
      res.setHeader('content-type', mime)
      // 读取文件并给响应
      res.end(fs.readFileSync(filepath))
    } else {
      res.statusCode = 404
      res.end('not found')
    }
  }

}).listen(3000, '0.0.0.0')
